

#include "bsp_led.h"

int bsp_led_init(void)
{
    BSP_LED0_GROUP_RCC_ENABLE;
    BSP_LED1_GROUP_RCC_ENABLE;
    BSP_LED2_GROUP_RCC_ENABLE;

    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = BSP_LED0_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(BSP_LED0_GROUP, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = BSP_LED1_PIN;
    HAL_GPIO_Init(BSP_LED1_GROUP, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = BSP_LED2_PIN;
    HAL_GPIO_Init(BSP_LED2_GROUP, &GPIO_InitStruct);

    HAL_GPIO_WritePin(BSP_LED0_GROUP, BSP_LED0_PIN, GPIO_PIN_SET);
    HAL_GPIO_WritePin(BSP_LED1_GROUP, BSP_LED1_PIN, GPIO_PIN_SET);
    HAL_GPIO_WritePin(BSP_LED2_GROUP, BSP_LED2_PIN, GPIO_PIN_SET);

    return 0;
}

int bsp_led_operation(enum bsp_led_idx led, enum bsp_led_state state)
{
    switch (led)
    {
    case led0:
        HAL_GPIO_WritePin(BSP_LED0_GROUP, BSP_LED0_PIN, (state == on) ? GPIO_PIN_RESET : GPIO_PIN_SET);
        break;
    case led1:
        HAL_GPIO_WritePin(BSP_LED1_GROUP, BSP_LED1_PIN, (state == on) ? GPIO_PIN_RESET : GPIO_PIN_SET);
        break;
    case led2:
        HAL_GPIO_WritePin(BSP_LED2_GROUP, BSP_LED2_PIN, (state == on) ? GPIO_PIN_RESET : GPIO_PIN_SET);
        break;
    default:
        break;
    }

    return 0;
}